import 'dart:async';
import 'package:ftoast/ftoast.dart';
import 'package:flutter/material.dart';

import 'device_auth.dart';
import 'cache.dart';
import 'data.dart';
import 'file.dart';
import 'http.dart';
import 'log.dart';

class Lib {
  static final Lib _instance = Lib._internal();
  late Cache cache;
  late Data data;
  late Log log;
  late LibFile file;
  late DeviceAuth deviceAuth;

  // ignore: prefer_typing_uninitialized_variables
  late Request request;
  factory Lib() {
    return _instance;
  }

  Lib._internal() {
    //空
  }
  // 初始化
  Future<bool> init() async {
    // 确保Widgets环境已初始化
    // WidgetsFlutterBinding.ensureInitialized();

    // 初始化 日志 实例
    log = Log();

    // 初始化 文件 实例
    file = LibFile();

    // 初始化 Data 实例
    data = Data();

    // 初始化 缓存 实例
    cache = Cache();

    // 初始化 请求 实例
    request = Request();

    deviceAuth = DeviceAuth();
    // try {
    //   // 等待 Data 类的异步初始化完成
    //   await data.init();
    //   log.info('Lib 初始化完成');
    return true;
    // } catch (e) {
    //   log.error("Lib 初始化失败: $e");
    //   return false;
    // }
  }

  Future<void> sleep(double times) async {
    await Future.delayed(Duration(milliseconds: (times * 1000).toInt()));
  }

  void toast(msg, context) {
    FToast.toast(
      context,
      msg: msg,
    );
  }

  Color color(String hexString) {
    String hex = hexString.replaceAll('#', '');
    if (hex.length == 6) {
      hex = 'FF$hex'; // 默认透明度为1（FF）
    } else if (hex.length == 3) {
      // ignore: prefer_interpolation_to_compose_strings
      hex = 'FF' + hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; // 简写形式
    }
    return Color(int.parse(hex, radix: 16));
  }
}
